#!perl -p

use Data::Printer;

#BEGIN{$%=8}s|(xmm\d+) = (.*)|$@=$1;$;=($2=~s!xmm\d+!$%{$&}//$&!rge);$%{$@}=xmm.$%++;"DATATYPE $%{$@} = $;"|ge||s{xmm\d+}{$%{$&}//$&}ge

$id=qr/(\w\d)/;
s!Mul_GF4\($id, $id, $id, $id, $id, $id, $id\)!$e=($%{$3}//$3).",".($%{$4}//$4).",".($%{$5}//$5).",".($%{$6}//$6);"(".($%{$1}=t.$%++).",".($%{$2}=t.$%++).") = Mul_GF4($e)"!e
    ||
s!Mul_GF4_N\($id, $id, $id, $id, $id\)!$e=($%{$1}//$1).",".($%{$2}//$2).",".($%{$3}//$3).",".($%{$4}//$4);"(".($%{$1}=t.$%++).",".($%{$2}=t.$%++).") = Mul_GF4_N($e)"!e
||
    s!p(?:or|xor|and) *\K$id, $id, $id!($%{$1}//$1).", ".($%{$2}//$2).", ".($%{$3}=t.$%++)!e;
END{p %%}
